#ifndef SEQUENCELIST_H_INCLUDED
#define SEQUENCELIST_H_INCLUDED

/****************************************
 *  Project： SequenceList
 *  Function:
 *  Description: 顺序表操作
 *  Author: coder-itl
 ****************************************
 *  Copyright 2021/10/4 by coder-itl
 ****************************************/

#define MAX_SIZE 255

#include "stdio.h"
#include "stdlib.h"

#include "DataElement.h"


/**
 * InitList 初始化顺序表
 * @param seqList    要初始化的顺序表
 * @param elemArray  初始化时要添加的元素内容数组
 * @param length     初始化时添加的元素个数
*/
void InitList(SeqList *seqList, ElementType *elemArray, int length);

/**
 * InsertList           向顺序表中的 index 位置插入某个元素
 * @param seqList       要插入元素的顺序表
 * @param index         要插入的下标
 * @param element       要插入的元素
*/
void InsertList(SeqList *seqList, int index, ElementType element);

/**
 * PrintList            输出顺序表
 * @param seqList       要输出的顺序表
*/
void PrintList(SeqList *seqList);

/**
 * 删除顺序表中指定下标的元素
 * @param seqList   要操作的顺序表
 * @param index     删除顺序表中指定下标的元素
 * @return 返回删除的元素,如果删除失败, 返回 NULL
 */
ElementType *DeleteElement(SeqList *seqList, int index);

/**
 * 查找循序表中指定下标的元素
 * @param seqList 要操作的顺序表
 * @param index 查找顺序表中指定下标的元素
 * @return 返回要查找的元素,如果查找失败,返回 NULL
 */
ElementType *GetElement(SeqList *seqList, int index);

/**
 * 获取顺序表的长度
 * @param seqList  要操作的顺序表
 * @return 返回长度
 */
int GetLength(SeqList *seqList);

/**
 * 判断顺序表是否为空
 * @param seqList  要判断的顺序表
 * @return 为空返回 True 否则返回 False
 */
int IsEmpty(SeqList *seqList);

/**
 * 清空顺序表操作
 * @param seqList  要清空的顺序表
 */
void ClearList(SeqList *seqList);


#endif // SEQUENCELIST_H_INCLUDED
